System HW와 C언어 연관 기술

2020-07-06
  • 현재 대다수 RISC이다.

    • x86이나 amd cpu들은 CISC 명령어들을 처리하지만 이들을 micro ops로 쪼개서 RISC 구조로 실행하기 때문에 RISC cpu
    • 컨트롤러가 가끔 CISC 사용
  • datapath 별 명령어가 적어서 Reduced Instruction Set Computer
  • x86 컴퓨터가 한 명령어 체계만 쓰고 있는 것이 아님

    • sse, AVX 등도 함께 사용
    • Multi-Datapath based RISC
    • 명령어 체계 별로 datapath 가짐
  • I 버스, D 버스 쓰는 경우 하버드 아키텍처

    • 폰 노이만 아키텍처와 다르다!
  • APIC(Advanced Programmable Interrupt Controller)

  • DMA(Direct Memory Access)

    • 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능
    • DMA에서 LPC핀의 경우 서버랑 통신할때 사용
  • Low Pin Count(LPC) : 하드웨어적으로 연결하는 핀

    • cpu에 낮은 광대역 장치 연결하는 인터페이스
  • Bare-metal : 가상화에서 가상 cpu 안의 값을 외부 장치가 바꾸는 기술

    • 소프트웨어 하드웨어 단 경계를 넘어 직접 접근하는 것
    • register 직접 접근
    • physical register도 접근 가능
    • 가상화의 경우 관리자가 편해짐

      • e.g. 사용자 cpu를 no operation으로 작동 못하게할 수 있음
    • 프로세서에서 사용할 경우 장치 직접 제어가 가능해짐
  • Controller는 IO를 위해 이미 Bare-metal이다.

    • 컨트롤러도 레지스터 가짐

      • 장치가 제어 역할을 하면 레지스터 가짐
    • register 직접 접근 가능 여부가 cpu와의 차이
  • char형은 int 형에서 인코딩 테이블에 맞춰 치환해주는 형태
  • SR-IOV(Single Root I/O Virtualization)

    • PF[Physical Function] : 물리적인 PCI 카드를 나타냄
    • VF[Virtual Function] : 가상 PCI 카드를 생성해 줄 수 있는 기능
  • 정의 → #define : 심볼 테이블에 명시함

    • 자료형, 함수명, 변수명 등 대다수 C언어 문법 안에 존재하는 것을 대상으로 할 수 있음
    • 선언과는 별개이지만 별칭(여러개 가능)을 붙였다고 볼 수 있음
  • gcc -E hello.c

    • -E 옵션 : 전처리 과정 화면에 출력
  • stdio.h

    • 시스템과 관련한 변수, 메모리 주소, 상수들을 선언
    • 메모리와 I/O 관계 정의
  • primitive data format : 선언 내리면 할당되어 있음

    • int
    • float
    • char
    • *
  • C언어 C89에서는 선언, 할당, 대입을 한번에 할 수 없었지만(에러 발생) C99부터 사용 가능
  • 어셈블러(컴퓨터 자체가)는 메모리 주소만으로 자료형알 수 없음
  • printf, scanf : 특수한 함수

    • va_args : 인자 개수가 가변적이고 제한이 없다.
    • 커널에서 한계가 있음
  • C 컴파일러의 4 stage : 만들 수 있는 바이너리 종류 4가지

    • 1st : Raw image ← 이 단계부터 printf, scanf 사용 가능
    • 2nd : KERNEL API
    • 3rd : Library
    • 4th : execute file